<script setup>
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
import { useUserStore } from "@/stores/modules/user";
import { useSessionStore } from "@/stores/modules/session";
import { setSafeAreaCSSVars } from "@/utils/safeArea.js";
import websocket from './utils/websocket';
import { useChatStore } from '@/stores/modules/chat';
// 设置全局CSS变量
const setGlobalCSSVars = () => {
  try {
    const cssVars = setSafeAreaCSSVars();

    // #ifdef H5
    // H5环境下设置CSS变量
    const root = document.documentElement;
    if (root) {
      root.style.setProperty(
        "--custom-nav-height",
        cssVars["--custom-nav-height"]
      );
      root.style.setProperty(
        "--status-bar-height",
        cssVars["--status-bar-height"]
      );
    }
    // #endif

    // 对于小程序和其他平台，通过页面样式传递
    // 具体实现会在CustomHeader组件中处理
  } catch (error) {
    console.error("设置全局CSS变量失败:", error);
  }
};

// 验证用户token并跳转
const validateUserAndRedirect = async () => {
  const userStore = useUserStore();
  const sessionStore = useSessionStore();
  
  try {
    // 检查是否有token
    const token = userStore.token;
    if (!token) {
      console.log('没有token，跳转到登录页面');
      uni.reLaunch({
        url: '/pages/loginRegister/loginRegister'
      });
      return;
    }

    // 有token，获取用户信息
    console.log('有token，获取用户信息');
    try {
      await userStore.getUserInfoAction();
    } catch (err) {
          uni.reLaunch({
          url: '/pages/loginRegister/loginRegister'
        });
        return;
    }
    
    // 获取会话列表
    try {
      console.log('开始获取会话列表...');
      await sessionStore.fetchSessionList();
      console.log('会话列表获取成功');
    } catch (error) {
      console.error('获取会话列表失败:', error);
      // 会话列表获取失败不影响页面跳转
    }
    
    // 根据用户角色跳转到对应的页面
    const userRole = userStore.userRole;
    let targetPage = '';
    
    if (userRole === 'company') {
      targetPage = '/pages/company/recommend/recommend';
      userStore.setUserRole('company');
    } else {
      targetPage = '/pages/candidate/position/position';
      userStore.setUserRole('candidate');
    }
    
    
    // 跳转到对应页面
    uni.reLaunch({
      url: targetPage,
      success: () => {
        console.log('跳转成功，目标页面:', targetPage);
      },
      fail: (err) => {
        console.error('跳转失败:', err);
      }
    });
    
  } catch (error) {
    console.error('获取用户信息失败:', error);
    // token可能过期或无效，清除本地存储并跳转到登录页面
    userStore.logoutAction();
    uni.reLaunch({
      url: '/pages/loginRegister/loginRegister'
    });
    return;
  }
      
    // 初始化WebSocket连接
    websocket.initSocketConnect();
};

// App启动时执行
onLaunch(() => {
  // 初始化录音管理器
  const charStore = useChatStore()
  charStore.initRecorder()
  // 设置安全区域CSS变量
  setGlobalCSSVars();

  // 初始化用户角色 - 优先从本地存储恢复
  const userStore = useUserStore();
  const savedRole = uni.getStorageSync("currentRole");
  console.log("获取的用户角色:", savedRole);
  
  if (savedRole && (savedRole === "candidate" || savedRole === "company")) {
    userStore.setUserRole(savedRole);
  } else {
    // 没有有效的本地角色，设置为默认求职者
    userStore.setUserRole("candidate");
  }

  // 延迟执行验证和跳转，确保欢迎页面有时间展示
  setTimeout(() => {
    validateUserAndRedirect();
  }, 2000); // 2秒后执行验证和跳转

  // 监听跳过欢迎页面事件
  uni.$on('skipWelcome', () => {
    validateUserAndRedirect();
  });
});

// App显示时执行
onShow(() => {
  console.log('App show');
  // 只在有token且WebSocket未连接时才初始化连接
  const userStore = useUserStore();
  if (userStore.token && !websocket.isOpenSocket) {
    websocket.initSocketConnect();
  }
});

// App隐藏时执行
onHide(() => {
  console.log('App hide');
});
</script>

<style lang="scss">
/*每个页面公共css */
@import "@/uni_modules/uni-scss/index.scss";
/* #ifndef APP-NVUE */
@import "@/static/customicons.css";
// 设置整个项目的背景色
page {
  background-color: #f5f5f5;
}

/* #endif */
.example-info {
  font-size: 14px;
  color: #333;
  padding: 10px;
}
</style>